# Project 9 表情LEDボード ![](media/A221.png) ### **1.説明** ロボットに表情ボードが追加されたらどれほど楽しいでしょうか。Keyestudioの8\*16 LEDボードがその役割を果たします。これを使えば、自分で表情、画像、パターンなどの表示をデザインできます。 8\*16 LEDボードは128個のLEDを備えています。マイクロプロセッサ(Arduino)のデータは2線式バスインターフェースを通じてAiP1640と通信します。したがって、モジュール上の128個のLEDのオン・オフを制御でき、モジュール上のドットマトリックスに必要なパターンを表示できます。配線の便宜のためにHX-2.54 4ピンケーブルが付属しています。 ### **2.仕様** - 動作電圧:DC 3.3-5V - 消費電力:400mW - 発振周波数:450KHz - 駆動電流:200mA - 動作温度:-40〜80℃ - 通信方式:I2C ### **3.回路図** ![](media/A222.png) ### **4.動作原理** 8\*16ドットマトリックスの各LEDをどう制御するか?1バイトは8ビットで、各ビットは0か1です。0のときはLEDが消灯、1のときは点灯します。1バイトでLEDの1列を制御でき、16バイトで16列のLEDを制御できます。これが8\*16ドットマトリックスです。 ### **5.ピンの説明と通信プロトコル** マイクロプロセッサ(Arduino)のデータは2線式バスケーブルを通じてAiP1640と通信します。 通信プロトコル図は以下の通りです。(SCLK)はSCL、(DIN)はSDAです。 ![](media/A223.png) ①データ入力の開始条件:SCLが高レベルで、SDAが高から低に変化する。 ②データコマンド設定には以下の方法があります。 サンプルプログラムでは、**アドレスに自動で1を加える方法**を選択し、2進数は0100 0000、対応する16進数は0x40です。 ![Img](media/A224.png) ③アドレスコマンド設定は以下のように選択できます。 サンプルプログラムでは最初の00Hを選択し、2進数1100 0000は16進数0xc0に対応します。 ![Img](media/A225.png) ④データ入力の要件は、SCLが高レベルのときにSDAの信号は変化しないことです。SCLが低レベルのときのみSDAの信号を変更できます。データ入力は下位ビットから先に、上位ビットは後です。 ⑤データ送信終了の条件は、SCLが低レベル、SDAが低レベルの状態からSCLが高レベルになったときにSDAが高レベルになることです。 ⑥表示制御では異なるパルス幅を設定でき、パルス幅は以下の図のように選択します。 例ではパルス幅は4/16で、2進数1000 1010に対応する16進数は0x8Aです。 ![Img](media/A226.png) **モジュールツールの使用説明** ドットマトリックスツールはオンライン版を使用し、リンクは:[http://dotmatrixtool.com/\#](http://dotmatrixtool.com/\#) ①リンクにアクセスすると以下のページが表示されます。 ![](media/A227.png) ②ドットマトリックスは8\*16なので、高さを8、幅を16に調整します。 ![](media/A228.png) ③パターンから16進数データを生成 以下の図のように左クリックで選択、右クリックでキャンセルし、表示したいパターンを描き、「Generate」をクリックすると必要な16進数データが生成されます。 ![](media/A229.png) ### **6.部品** | 開発ボード *1 | 8833 モータードライバー *1 | 8x16 LEDパネル*1 | | ------------------------- | -------------------------------- | ------------------------- | | ![img](media/A230.jpg) | ![img](media/A231.jpg) | ![img](media/A232.jpg) | | USBケーブル*1 | HX-2.54 4P デュポン線 200mm *1 | | | ![img](media/A233.jpg) | ![img](media/A234.jpg) | | ### **7.配線図** ![](media/A235.png) 8x16 LEDライトボードのGND、VCC、SDA、SCLはそれぞれkeyestudioセンサー拡張ボードのGND、+(VCC)、A4、A5に接続され、2線式シリアル通信を行います。 (注意: ArduinoのIICピンに接続されていますが、このモジュールはIIC通信用ではありません。ここでのIOポートはI2C通信をシミュレートするもので、任意の2つのピンに接続可能です)。 ### **8.テストコード** コードを書く前に、8x16 LEDボードのライブラリファイルをインポートする必要があります。具体的な手順は以下の通りです: ![](media/A29.png)をクリックしてセンサー/モジュール/コンポーネントの拡張ライブラリ画面に入り、「**Matrix 8\*16 Aip1640**」モジュールを検索し、![](media/A236.png)をクリックします。これにより「**Not loaded**」が「**loaded**」に変わり、「**Matrix 8\*16 Aip1640**」モジュールが正常に追加されたことを示します。 ![Img](media/A237.png) ![](media/A238.png) ![](media/A33.png)をクリックしてコードエディタ画面に戻ると、追加された「**Matrix 8\*16 Aip1640**」モジュールの命令ブロックがモジュールエリアに表示されます。 ![](media/A239.png) ブロックをドラッグして編集できます。以下のブロックは参考用です。 (1).![](media/A126.png) (2).![](media/A240.png) **完成したテストコード** ![](media/A241.png) ### **9.テスト結果** コードをV4.0ボードに正常にアップロードした後、配線図に従って配線し、DIPスイッチをONにすると、LEDボードに笑顔のパターンが表示されます。 ![](media/A242.png) ### **10.コード説明** 先ほど学んだモジュールツール [http://dotmatrixtool.com/\#](http://dotmatrixtool.com/\#) を使い、ドットマトリックスにスタートパターン、前進、停止、クリアのパターンを表示させます。時間間隔は2000msです。 ![image-20250513092102687](media/A243.png)![image-20250513092107293](media/A244.png)![image-20250513092113035](media/A245.png)![image-20250513092116952](media/A246.png) 笑顔の命令ブロック ![](media/A247.png) 表情の命令ブロック:![](media/A248.png) ハートの命令ブロック ![](media/A249.png) 前進の命令ブロック ![](media/A250.png) **後退**の命令ブロック ![](media/A251.png) **左折**の命令ブロック ![](media/A252.png) **右折**の命令ブロック ![](media/A253.png) **停止**の命令ブロック ![](media/A254.png) **画面クリア**の命令ブロック ![](media/A255.png) ![](media/A235.png) ブロックをドラッグして編集できます。以下のブロックは参考用です。 (1).![](media/A126.png) (2).![](media/A240.png) (3).![](media/A256.png) **完成したテストコード** ![](media/A257.png) テストコードをアップロードすると、表情ボードはこれらのパターンを順番に表示し、このシーケンスを繰り返します。 ![image-20250513092222972](media/A258.png)![image-20250513092233711](media/A259.png)![image-20250513092238552](media/A260.png)